ASP.Net Core WebSockets এবং গ্লোবালাইজেশন (Localization and Globalization)

Microsoft Technologies - ডট নেট কোর (Dot.Net Core)
220
220

ASP.NET Core প্রোগ্রামিং ভাষায় WebSockets এবং গ্লোবালাইজেশন (Localization and Globalization) দুটি অত্যন্ত গুরুত্বপূর্ণ ফিচার। WebSockets রিয়েল-টাইম ডেটা ট্রান্সফার সম্ভব করে এবং গ্লোবালাইজেশন ও Localization আন্তর্জাতিক ব্যবহারকারীদের জন্য অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। আসুন, এগুলো নিয়ে বিস্তারিত আলোচনা করি।


ASP.Net Core WebSockets

WebSockets হল একটি নেটওয়ার্ক প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি দুই-দিকযুক্ত, স্থায়ী কানেকশন তৈরি করে। WebSockets প্রোটোকল HTTP প্রোটোকলের উপর ভিত্তি করে কাজ করে, তবে এটি ডাটা ট্রান্সফারের জন্য একটি স্থায়ী কানেকশন বজায় রাখে, যা রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য খুবই উপকারী।

WebSockets এর সুবিধা

  1. Real-Time Communication: WebSockets দ্বারা ক্লায়েন্ট এবং সার্ভার মধ্যে ডেটা অবিলম্বে এক্সচেঞ্জ করা সম্ভব হয়। এটি চ্যাট অ্যাপ্লিকেশন, লাইভ ফিড, এবং গেমসের জন্য উপযুক্ত।
  2. Low Latency: HTTP রিকোয়েস্ট এবং রেসপন্সের পরিবর্তে একটি একক সংযোগের মাধ্যমে ডেটা দ্রুত স্থানান্তরিত হয়। ফলে লেটেন্সি (Latency) কম হয়।
  3. Bi-Directional Communication: WebSockets দুই-দিকযুক্ত যোগাযোগকে সমর্থন করে, যার মানে হচ্ছে, শুধু ক্লায়েন্টই নয়, সার্ভারও ক্লায়েন্টকে তথ্য পাঠাতে পারে।

ASP.Net Core এ WebSockets ব্যবহার

ASP.NET Core এ WebSockets ব্যবহার করার জন্য নিচের পদক্ষেপগুলো অনুসরণ করতে হবে:

  1. WebSocket Middleware Enable করা: প্রথমে, Startup.cs ফাইলে UseWebSockets মেথড ব্যবহার করে WebSocket Middleware যোগ করতে হবে।

    public void Configure(IApplicationBuilder app)
    {
        app.UseWebSockets();  // WebSockets সক্রিয় করা
        app.UseRouting();
    
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGet("/ws", async context =>
            {
                if (context.WebSockets.IsWebSocketRequest)
                {
                    WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
                    await Echo(webSocket);
                }
                else
                {
                    context.Response.StatusCode = 400; // Bad Request
                }
            });
        });
    }
    
  2. WebSocket Communication: এরপর, Echo মেথড তৈরি করা হবে যা WebSocket থেকে ডেটা রিসিভ করে এবং তা আবার ক্লায়েন্টকে পাঠাবে। এটি ক্লায়েন্ট-সার্ভার কমিউনিকেশনকে রিয়েল-টাইমে পরিচালনা করবে।

    private async Task Echo(WebSocket webSocket)
    {
        var buffer = new byte[1024 * 4];
        WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
    
        while (!result.CloseStatus.HasValue)
        {
            await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None);
            result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
        }
    
        await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
    }
    
  3. Client Side (JavaScript): ক্লায়েন্ট সাইডে JavaScript দিয়ে WebSocket কানেকশন তৈরি করা হবে। উদাহরণস্বরূপ:

    var socket = new WebSocket("ws://localhost:5000/ws");
    
    socket.onmessage = function(event) {
        console.log("Message from server: ", event.data);
    };
    
    socket.onopen = function(event) {
        socket.send("Hello, Server!");
    };
    
    socket.onclose = function(event) {
        console.log("Connection closed");
    };
    

WebSockets আপনাকে রিয়েল-টাইম কমিউনিকেশন এবং ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশন তৈরি করার সুবিধা দেয়, যেমন চ্যাট অ্যাপ, লাইভ ডাটা ফিড, এবং ইন্টারঅ্যাকটিভ গেমস।


গ্লোবালাইজেশন (Globalization) এবং Localization

গ্লোবালাইজেশন এবং Localization দুটি পদ্ধতি যা আন্তর্জাতিক বাজারে অ্যাপ্লিকেশন সরবরাহ করতে সাহায্য করে। এই পদ্ধতিগুলি ব্যবহার করে অ্যাপ্লিকেশনগুলিকে বিভিন্ন ভাষা এবং অঞ্চলের জন্য উপযোগী করা হয়।

Globalization (গ্লোবালাইজেশন)

গ্লোবালাইজেশন এমন একটি প্রক্রিয়া যার মাধ্যমে একটি অ্যাপ্লিকেশন এমনভাবে ডিজাইন করা হয় যাতে এটি বিভিন্ন ভাষা, মুদ্রা, এবং দেশীয় নিয়ম-কানুন অনুসারে কাজ করতে পারে। এর মাধ্যমে অ্যাপ্লিকেশনটি বিভিন্ন দেশের ব্যবহারকারীদের জন্য মানানসই হয়ে ওঠে।

ASP.NET Core এ গ্লোবালাইজেশন ব্যবহারের জন্য IStringLocalizer এবং CultureInfo ব্যবহার করা হয়।

Localization (লোকালাইজেশন)

লোকালাইজেশন হল সেই প্রক্রিয়া, যা একক ভাষায় অ্যাপ্লিকেশন কাস্টমাইজ করার মাধ্যমে ব্যবহারকারীকে সেই ভাষায় সঠিক কনটেন্ট প্রদর্শন করতে সহায়তা করে। এর মধ্যে টেক্সট, ফরম্যাট, তারিখ, সময় ইত্যাদি স্থানীয় ভাষার বা সংস্কৃতির উপযোগী করে তৈরি করা হয়।

ASP.NET Core এ Localization এর জন্য প্রয়োজনীয় কনফিগারেশন এর মধ্যে প্রধানত RequestLocalizationMiddleware ব্যবহার করা হয়।

ASP.NET Core এ Localization কনফিগারেশন

  1. Localization Setup: Startup.cs ফাইলে Localization এবং Globalization কনফিগারেশন করতে হবে।

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddLocalization(options => options.ResourcesPath = "Resources");
        services.AddMvc().AddDataAnnotationsLocalization();
    }
    
    public void Configure(IApplicationBuilder app)
    {
        var supportedCultures = new[] { "en-US", "fr-FR", "de-DE" };
        var localizationOptions = new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("en-US"),
            SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToArray(),
            SupportedUICultures = supportedCultures.Select(c => new CultureInfo(c)).ToArray()
        };
    
        app.UseRequestLocalization(localizationOptions);
    
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
    
  2. Localization Resource Files: তারপর আপনাকে বিভিন্ন ভাষায় কনটেন্ট তৈরি করতে হবে, যেমন Resources ফোল্ডারে MyResource.resx, MyResource.fr.resx ইত্যাদি ফাইল থাকবে।
  3. Text Localization: কোডে IStringLocalizer ব্যবহার করে ভাষার পরিবর্তনশীল কনটেন্ট লোড করা হবে।

    public class HomeController : Controller
    {
        private readonly IStringLocalizer<HomeController> _localizer;
    
        public HomeController(IStringLocalizer<HomeController> localizer)
        {
            _localizer = localizer;
        }
    
        public IActionResult Index()
        {
            ViewData["Message"] = _localizer["WelcomeMessage"];
            return View();
        }
    }
    

সারাংশ

ASP.NET Core WebSockets এবং গ্লোবালাইজেশন-লোকালাইজেশন দুইটি গুরুত্বপূর্ণ ফিচার যা আপনার অ্যাপ্লিকেশনকে আরও কার্যকরী এবং আন্তর্জাতিক ব্যবহারকারীদের জন্য উপযোগী করে তোলে। WebSockets রিয়েল-টাইম কমিউনিকেশন সাপোর্ট করে, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে একযোগভাবে ডেটা আদান-প্রদান নিশ্চিত করে। অন্যদিকে, Globalization এবং Localization অ্যাপ্লিকেশনকে একাধিক ভাষা এবং সংস্কৃতির জন্য উপযোগী করতে সাহায্য করে, যার ফলে ব্যবহারকারীরা তাদের স্থানীয় ভাষায় অ্যাপ্লিকেশন ব্যবহার করতে পারে।

common.content_added_by

WebSockets পরিচিতি এবং ব্যবহার

223
223

WebSockets একটি আধুনিক কমিউনিকেশন প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে পূর্ণ-ডুপ্লেক্স (full-duplex) যোগাযোগ স্থাপন করতে ব্যবহৃত হয়। এর মাধ্যমে একবার কানেকশন স্থাপন হওয়ার পর, সার্ভার এবং ক্লায়েন্ট একে অপরকে সরাসরি এবং দ্রুত ডেটা আদান-প্রদান করতে সক্ষম হয়। WebSockets মূলত Web, IoT, গেমিং, স্টক মার্কেট ট্র্যাকিং, এবং রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী প্রযুক্তি হিসেবে পরিচিত।


WebSockets কী?

WebSockets হল একটি প্রোটোকল যা HTTP প্রোটোকলের উপরে কাজ করে এবং একটি স্থায়ী সংযোগ তৈরি করে যা একবার স্থাপন হলে ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য এক্সচেঞ্জ করতে পারে। WebSockets এর সাহায্যে HTTP রিকোয়েস্ট এবং রেসপন্স মডেল থেকে বের হয়ে সরাসরি কানেকশন স্থাপন করা সম্ভব হয়। এই কানেকশনটি সার্ভার এবং ক্লায়েন্টের মধ্যে উন্মুক্ত থাকে এবং কোনো একে অপরের কাছে তথ্য পাঠানো বা গ্রহণ করা যায়, যেটি HTTP প্রোটোকলের মাধ্যমে সম্ভব নয়।

WebSocket কনেকশন শুরু হয় সাধারণ HTTP হ্যান্ডশেক দ্বারা, তবে এরপর এটি একটি WebSocket কনেকশনে পরিণত হয় যা সার্ভার এবং ক্লায়েন্টের মধ্যে অর্ধেক পথ (halfway) পর্যন্ত চলতে থাকে। WebSockets এর সবচেয়ে বড় সুবিধা হল, এটি একাধিক মেসেজ পাঠানোর জন্য অতিরিক্ত HTTP হেডার বা সেশন ব্যবস্থাপনা ছাড়াই কাজ করে।


WebSockets-এর কার্যপ্রণালী

WebSockets এর কার্যপ্রণালী মোটামুটি নিম্নরূপ:

  1. HTTP হ্যান্ডশেক: ক্লায়েন্ট প্রথমে HTTP রিকোয়েস্ট পাঠায় যা একটি WebSocket সংযোগ স্থাপনের জন্য সার্ভারে অনুমোদন চায়। সার্ভার যদি এই রিকোয়েস্ট মেনে নেয়, তখন HTTP হ্যান্ডশেক সম্পন্ন হয় এবং সার্ভার একটি WebSocket কনেকশন গ্রহণ করে।
  2. পূর্ণ-ডুপ্লেক্স কনেকশন: একবার WebSocket কনেকশন হয়ে গেলে, সার্ভার এবং ক্লায়েন্ট দুজনই একে অপরকে বার্তা পাঠাতে এবং গ্রহণ করতে পারে। এই কনেকশনটি কোন সময়সীমা ছাড়া স্থায়ী থাকতে পারে যতক্ষণ না এটি বন্ধ করা হয়।
  3. ডেটা ট্রান্সফার: WebSockets একটি কম্প্যাক্ট এবং দ্রুত ডেটা প্রোটোকল ব্যবহার করে, যেখানে সার্ভার এবং ক্লায়েন্টের মধ্যে বার্তা আদান-প্রদান করা হয়। এটি কম্প্রেশন ও ফ্রেমিং কৌশল ব্যবহার করে।
  4. কনেকশন বন্ধ: যখন আর ডেটা ট্রান্সফারের প্রয়োজন হয় না, তখন কনেকশন বন্ধ করা হয়।

WebSockets এর সুবিধা

  • দ্রুত এবং কম লেটেন্সি: WebSockets এর মাধ্যমে একবার কানেকশন স্থাপন হলে, অতিরিক্ত HTTP হেডার ছাড়া সরাসরি তথ্য আদান-প্রদান সম্ভব হয়, যা HTTP প্রোটোকলের তুলনায় অনেক দ্রুত হয়।
  • দ্বি-মুখী যোগাযোগ: WebSockets-এর মাধ্যমে পূর্ণ-ডুপ্লেক্স যোগাযোগ সম্ভব, যার মানে হলো সার্ভার এবং ক্লায়েন্ট একই সময়ে একে অপরকে তথ্য পাঠাতে পারে। এটি বিশেষত রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য উপযুক্ত।
  • নিরবচ্ছিন্ন সংযোগ: একবার কানেকশন তৈরি হলে, এটি স্থায়ী থাকে যতক্ষণ না এটি বন্ধ করা হয়, ফলে অতিরিক্ত সংযোগ স্থাপন এবং বিচ্ছিন্নতা এড়ানো যায়।
  • কম ব্যান্ডউইথ ব্যবহার: WebSockets শুধুমাত্র প্রয়োজনীয় ডেটা পাঠায় এবং নিয়মিত HTTP হেডার ব্যবহার করে না, তাই এটি কম ব্যান্ডউইথ ব্যবহার করে।
  • রিয়েল-টাইম অ্যাপ্লিকেশন: এটি চ্যাট অ্যাপ্লিকেশন, লাইভ ফিড, রিয়েল-টাইম গেমস, এবং অন্যান্য সেমি-রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য খুবই উপযুক্ত।

WebSockets এর ব্যবহার

WebSockets সাধারণত যেসব অ্যাপ্লিকেশনে রিয়েল-টাইম কমিউনিকেশন প্রয়োজন সেখানে ব্যবহৃত হয়। এর কিছু প্রধান ব্যবহার ক্ষেত্র:

  • চ্যাট অ্যাপ্লিকেশন: যেখানে একাধিক ব্যবহারকারী একে অপরের সাথে রিয়েল-টাইমে মেসেজ আদান-প্রদান করতে পারে। WebSockets এই ধরনের অ্যাপ্লিকেশনগুলির জন্য খুবই উপযুক্ত, কারণ এটি দ্রুত এবং দুদিক থেকে যোগাযোগ করতে সাহায্য করে।
  • লাইভ স্ট্যাটাস আপডেট: যেমন স্টক মার্কেট, স্পোর্টস স্কোর ট্র্যাকিং বা অন্যান্য অ্যাপ্লিকেশন যেখানে ফ্রিকোয়েন্টলি স্ট্যাটাস আপডেটের প্রয়োজন হয়।
  • রিয়েল-টাইম গেমস: গেমের মধ্যে প্লেয়ারদের স্ট্যাটাস, পয়েন্ট, বা অন্যান্য তথ্য রিয়েল-টাইমে ট্র্যাক করার জন্য WebSockets ব্যবহার করা হয়। এটি গেমের ইন্টারঅ্যাকশন দ্রুত এবং সিমলেটেনিয়াস রাখে।
  • লাইভ ফিড এবং নিউজ অ্যাপ্লিকেশন: নিউজ অ্যাপ্লিকেশন বা লাইভ ফিডে যেখানে নতুন কন্টেন্ট আপডেটের জন্য রিয়েল-টাইম ডেটা শেয়ার করার প্রয়োজন হয়।
  • IoT অ্যাপ্লিকেশন: IoT ডিভাইসগুলির মধ্যে দ্রুত ডেটা আদান-প্রদান করার জন্য WebSockets একটি আদর্শ প্রযুক্তি হতে পারে।

WebSockets উদাহরণ (ASP.NET Core)

ASP.NET Core-এ WebSockets ব্যবহার করার জন্য প্রথমে আপনাকে কিছু কনফিগারেশন করতে হবে। এখানে একটি সিম্পল উদাহরণ দেখানো হলো:

  1. Startup.cs ফাইলে WebSockets কনফিগার করা

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    
        app.UseRouting();
    
        // WebSockets সক্রিয় করা
        app.UseWebSockets();
    
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGet("/ws", async context =>
            {
                if (context.WebSockets.IsWebSocketRequest)
                {
                    var webSocket = await context.WebSockets.AcceptWebSocketAsync();
                    // WebSocket ইন্টারঅ্যাকশন পরিচালনা করতে কোড
                }
                else
                {
                    context.Response.StatusCode = 400;
                }
            });
        });
    }
    
  2. WebSocket ইন্টারঅ্যাকশন:

    WebSocket কানেকশনের পর, সার্ভার এবং ক্লায়েন্টের মধ্যে ডেটা ট্রান্সফার করা সম্ভব।

    var buffer = new byte[1024 * 4];
    WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
    await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), WebSocketMessageType.Text, true, CancellationToken.None);
    

WebSockets এবং অন্যান্য রিয়েল-টাইম প্রযুক্তি তুলনা

বৈশিষ্ট্যWebSocketsHTTP PollingLong Polling
যোগাযোগ টাইপপূর্ণ-ডুপ্লেক্স (Full-duplex)একমুখী (Unidirectional)একমুখী (Unidirectional)
কানেকশন টাইপস্থায়ী কানেকশন (Persistent connection)বারবার নতুন কানেকশন (New connections each time)স্থায়ী কানেকশন (Persistent connection)
প্রযুক্তিWebSocket প্রোটোকল (WebSocket protocol)HTTP প্রোটোকল (HTTP protocol)HTTP প্রোটোকল (HTTP protocol)
দ্রুততাদ্রুত (Fast)ধীর (Slow)ধীর (Slow)
ব্যবহাররিয়েল-টাইম অ্যাপ্লিকেশন (Real-time applications)সাধারণ ওয়েব পেজ লোড (General web page load)কিছু রিয়েল-টাইম অ্যাপ্লিকেশন (Some real-time apps)

সারাংশ

WebSockets একটি শক্তিশালী এবং দ্রুত যোগাযোগ প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে পূর্ণ-ডুপ্লেক্স এবং স্থায়ী কানেকশন প্রদান করে। এটি বিশেষ করে রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ স্ট্যাটাস আপডেট, গেমস, এবং IoT ডিভাইসের মধ্যে যোগাযোগ। WebSockets ব্যবহার করে, ডেটা দ্রুত এবং কম লেটেন্সি সহ আদান-প্রদান করা যায়, যা HTTP প্রোটোকলের তুলনায় অনেক বেশি কার্যকরী।

common.content_added_by

Localization এবং Globalization কনফিগার করা

172
172

Localization এবং Globalization হলো দুটি গুরুত্বপূর্ণ ধারণা যা বিভিন্ন ভাষা এবং সংস্কৃতির জন্য অ্যাপ্লিকেশন কাস্টমাইজ করার জন্য ব্যবহৃত হয়। ASP.NET Core-এ Localization এবং Globalization ব্যবহার করে, আপনি আপনার অ্যাপ্লিকেশনকে বিশ্বের বিভিন্ন অঞ্চলের ভাষা, সময়, সংখ্যা এবং মুদ্রার ফর্ম্যাট অনুযায়ী কাস্টমাইজ করতে পারবেন।

  • Globalization: এটি একটি অ্যাপ্লিকেশনের কার্যকারিতা এবং আচরণকে বিভিন্ন ভাষা এবং অঞ্চলের ব্যবহারকারীদের জন্য উপযোগী করে তৈরি করার প্রক্রিয়া। এর মধ্যে অন্তর্ভুক্ত থাকে যেমন তারিখ, সময়, সংখ্যা, এবং মুদ্রা ফরম্যাটের জন্য একক কনফিগারেশন।
  • Localization: এটি একটি নির্দিষ্ট ভাষা বা অঞ্চলের জন্য অ্যাপ্লিকেশনের কনটেন্ট এবং তথ্য কাস্টমাইজ করার প্রক্রিয়া। এটি মূলত ভাষা পরিবর্তন, ট্রান্সলেশন এবং বিশেষ সাংস্কৃতিক উপাদানগুলির সমন্বয় করে।

ASP.NET Core-এ Localization এবং Globalization কনফিগার করার মাধ্যমে, আপনি ব্যবহারকারীর ভাষা এবং অঞ্চলের উপর ভিত্তি করে একটি ব্যক্তিগতকৃত অভিজ্ঞতা প্রদান করতে পারবেন।


Localization এবং Globalization কনফিগারেশন

ASP.NET Core অ্যাপ্লিকেশনে Localization এবং Globalization কনফিগার করার জন্য কিছু নির্দিষ্ট ধাপ অনুসরণ করতে হয়। এগুলো অন্তর্ভুক্ত করে:

  1. সার্ভিস কনফিগারেশন: প্রথমে আপনাকে অ্যাপ্লিকেশনে Localization এর জন্য সার্ভিস কনফিগার করতে হবে। Startup.cs ফাইলে ConfigureServices মেথডে Localization সার্ভিস যোগ করুন।

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddLocalization(options => options.ResourcesPath = "Resources");
    
        services.AddMvc()
            .AddDataAnnotationsLocalization()
            .AddViewLocalization();
    }
    
  2. কনফিগারেশন এঞ্জিন সেটআপ: ASP.NET Core অ্যাপ্লিকেশনটিকে ব্যবহারকারীর বর্তমান ভাষা বা অঞ্চল নির্ধারণের জন্য একটি Request Localization Middleware সেটআপ করতে হবে। এটি সাধারণত Configure মেথডে করা হয়।

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var supportedCultures = new[] { "en-US", "fr-FR", "es-ES" };
    
        var localizationOptions = new RequestLocalizationOptions()
            .SetDefaultCulture("en-US")
            .AddSupportedCultures(supportedCultures)
            .AddSupportedUICultures(supportedCultures);
    
        app.UseRequestLocalization(localizationOptions);
    
        app.UseMvc();
    }
    

    এখানে, supportedCultures অ্যারে এর মধ্যে আপনি যেসব ভাষা সাপোর্ট করতে চান সেগুলো উল্লেখ করবেন। SetDefaultCulture মেথডে ডিফল্ট সংস্কৃতি বা ভাষা নির্ধারণ করা হয়, এবং AddSupportedCultures দ্বারা যে সংস্কৃতিগুলি সমর্থিত তা যোগ করা হয়।

  3. রিসোর্স ফাইল তৈরি করা: Localization এর জন্য, আপনাকে নির্দিষ্ট ভাষায় রিসোর্স ফাইল তৈরি করতে হবে। এটি সাধারণত .resx (Resources) ফাইল ফরম্যাটে করা হয়। প্রতিটি ভাষার জন্য আলাদা .resx ফাইল থাকবে। উদাহরণস্বরূপ:

    • Resources/Views/Home/Index.en-US.resx (English)
    • Resources/Views/Home/Index.fr-FR.resx (French)
    • Resources/Views/Home/Index.es-ES.resx (Spanish)

    এই রিসোর্স ফাইলগুলিতে আপনি অ্যাপ্লিকেশনের UI কন্টেন্ট, বার্তা, টেক্সট ইত্যাদি ভাষা ভিত্তিক কনফিগার করতে পারেন।

    উদাহরণ: Index.en-US.resx

    <data name="Greeting" xml:space="preserve">
        <value>Hello, Welcome!</value>
    </data>
    

    Index.fr-FR.resx

    <data name="Greeting" xml:space="preserve">
        <value>Bonjour, bienvenue!</value>
    </data>
    
  4. ভাষার উপর ভিত্তি করে কনটেন্ট দেখানো: Localization এবং Globalization কনফিগার করার পরে, আপনি ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করতে পারবেন। এর জন্য IStringLocalizer অথবা IHtmlLocalizer ইন্টারফেস ব্যবহার করতে হবে।

    Controller এ Localization ব্যবহার:

    public class HomeController : Controller
    {
        private readonly IStringLocalizer<HomeController> _localizer;
    
        public HomeController(IStringLocalizer<HomeController> localizer)
        {
            _localizer = localizer;
        }
    
        public IActionResult Index()
        {
            var greeting = _localizer["Greeting"];
            return View("Index", greeting);
        }
    }
    

    View-এ Localization ব্যবহার:

    <h1>@Localizer["Greeting"]</h1>
    

Globalization কনফিগারেশন

Globalization কনফিগারেশন কেবল ভাষার নয়, বরং অন্যান্য অঞ্চলের সংস্কৃতির উপরও নির্ভর করে। যেমন, তারিখ, সময়, সংখ্যা এবং মুদ্রা ফরম্যাট একটি নির্দিষ্ট সংস্কৃতি অনুযায়ী প্রদর্শিত হতে পারে।

  1. Globalization Configuration: আপনি চাইলে অ্যাপ্লিকেশনটিকে একটি নির্দিষ্ট সংস্কৃতির জন্য কনফিগার করতে পারেন, যেমন তারিখের ফরম্যাট:

    var cultureInfo = new CultureInfo("en-US");
    CultureInfo.CurrentCulture = cultureInfo;
    CultureInfo.CurrentUICulture = cultureInfo;
    
  2. ডেটা ফরম্যাটিং: Globalization এর মাধ্যমে নির্দিষ্ট সংস্কৃতির ভিত্তিতে সংখ্যা বা সময় ফরম্যাট করতে পারেন।

    উদাহরণ:

    var amount = 1234.56;
    var formattedAmount = amount.ToString("C", new CultureInfo("en-US")); // $1,234.56
    

    এখানে, মুদ্রার ফরম্যাট “$” মার্কিন মুদ্রার চিহ্ন অনুসারে হবে।


Localization এবং Globalization এর সেরা প্র্যাকটিস

  • সংস্কৃতি/ভাষা নির্বাচন: অ্যাপ্লিকেশনে একটি ড্রপডাউন বা ফ্ল্যাগ আইকন ব্যবহার করে ব্যবহারকারীকে তাদের পছন্দসই ভাষা বা সংস্কৃতি নির্বাচন করতে দিতে পারেন।
  • ফলপ্রসূ রিসোর্স ফাইল ব্যবহার: রিসোর্স ফাইলগুলিতে অবশ্যই ভাষার মানানসই উপাদানগুলি থাকতে হবে। কখনোই সঠিক ট্রান্সলেশন নিশ্চিত না হওয়া পর্যন্ত একটি নতুন ভাষা যোগ করবেন না।
  • সময় এবং তারিখের ফরম্যাট: বিভিন্ন সংস্কৃতি বিভিন্ন সময় এবং তারিখ ফরম্যাট ব্যবহার করে। অবশ্যই ব্যবহারকারীর অঞ্চল অনুযায়ী ফরম্যাট নির্বাচন করতে হবে।
  • মুদ্রা সিস্টেম: মুদ্রা প্রদর্শন করার সময়, আপনাকে সেই অঞ্চলের মুদ্রা ব্যবহার করতে হবে (যেমন, ভারতের জন্য, $ মার্কিন যুক্তরাষ্ট্রের জন্য)।

Localization এবং Globalization কনফিগার করার মাধ্যমে আপনি আপনার ASP.NET Core অ্যাপ্লিকেশনকে বিশ্বব্যাপী ব্যবহারকারীদের জন্য আরও উপযোগী এবং বন্ধুত্বপূর্ণ করে তুলতে পারবেন। এটি আন্তর্জাতিক স্তরে একটি অ্যাপ্লিকেশনকে সফলভাবে প্রবর্তন করার জন্য একটি অপরিহার্য উপায়।

common.content_added_by

ASP.Net Core এ Multiple Language Support

231
231

ASP.NET Core অ্যাপ্লিকেশনগুলিতে Multiple Language Support বা একাধিক ভাষার সমর্থন যুক্ত করা একটি গুরুত্বপূর্ণ ফিচার, বিশেষ করে আন্তর্জাতিক ব্যবহারকারীদের জন্য। ASP.NET Core ইন্টারন্যাশনালাইজেশন (Internationalization) এবং লোকালাইজেশন (Localization) এর সুবিধা দিয়ে বিভিন্ন ভাষায় অ্যাপ্লিকেশন কনটেন্ট প্রদর্শন করতে সাহায্য করে।

Localization হল এক বা একাধিক ভাষায় অ্যাপ্লিকেশন কনটেন্টের প্রদর্শন, যেখানে Internationalization হল অ্যাপ্লিকেশনকে এমনভাবে তৈরি করা যাতে তা বিভিন্ন ভাষা এবং অঞ্চলের জন্য কাস্টমাইজ করা যায়।

ASP.NET Core এ Localization সাপোর্ট যোগ করতে, কিছু কনফিগারেশন এবং কোড পরিবর্তন করা দরকার।


ASP.NET Core এ Localization কনফিগারেশন

১. প্রয়োজনীয় NuGet প্যাকেজ ইনস্টল করা

প্রথমে, Localization এর জন্য Microsoft.Extensions.Localization এবং Microsoft.AspNetCore.Localization প্যাকেজগুলো ইনস্টল করতে হবে। আপনি যদি NuGet Package Manager ব্যবহার করেন, তাহলে নিচের কমান্ড দিয়ে প্যাকেজ ইনস্টল করুন:

dotnet add package Microsoft.Extensions.Localization
dotnet add package Microsoft.AspNetCore.Localization

২. Startup.cs ফাইলে Localization কনফিগারেশন

Localization সক্রিয় করার জন্য Startup.cs ফাইলে কিছু কনফিগারেশন করা হয়।

ConfigureServices মেথডে Localization কনফিগারেশন
public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(options => options.ResourcesPath = "Resources");

    services.AddMvc()
            .AddDataAnnotationsLocalization()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
}

এখানে, AddLocalization মেথডটি ResourcesPath দিয়ে Resources ফোল্ডারটি নির্ধারণ করে, যেখানে বিভিন্ন ভাষার ফাইল সংরক্ষিত হবে। AddViewLocalizationAddDataAnnotationsLocalization মেথডগুলো ভিউ এবং ডেটা অ্যানোটেশন লকালাইজেশন সাপোর্ট যোগ করে।

Configure মেথডে Localization কনফিগারেশন
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    var supportedCultures = new[] { "en-US", "fr-FR", "es-ES" };

    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("en-US"),
        SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToArray(),
        SupportedUICultures = supportedCultures.Select(c => new CultureInfo(c)).ToArray()
    });

    app.UseMvc();
}

এখানে, supportedCultures এর মাধ্যমে আপনি যে ভাষাগুলো সমর্থন করবেন তা নির্দিষ্ট করেছেন। DefaultRequestCulture হল ডিফল্ট ভাষা যা অ্যাপ্লিকেশন শুরু হলে ব্যবহার হবে।


ভাষা রিসোর্স ফাইল তৈরি

প্রতিটি ভাষার জন্য একটি রিসোর্স ফাইল তৈরি করতে হবে। Resources ফোল্ডারের মধ্যে ভাষার নাম দিয়ে একটি .resx ফাইল তৈরি করুন। উদাহরণস্বরূপ:

  • Resources/Views/Home/Index.en-US.resx (English)
  • Resources/Views/Home/Index.fr-FR.resx (French)
  • Resources/Views/Home/Index.es-ES.resx (Spanish)

এই ফাইলগুলোর মধ্যে আপনি ভাষানুযায়ী কনটেন্ট সংরক্ষণ করবেন।

উদাহরণস্বরূপ, Index.en-US.resx:

KeyValue
WelcomeTextWelcome to our website!

Index.fr-FR.resx:

KeyValue
WelcomeTextBienvenue sur notre site!

কনট্রোলার ও ভিউতে Localization ব্যবহার

আপনি আপনার কনট্রোলার এবং ভিউতে Localization ব্যবহার করতে পারেন। কনট্রোলারে, আপনি IStringLocalizer ইনজেক্ট করে নির্দিষ্ট ভাষায় কনটেন্ট রিটার্ন করতে পারবেন।

কনট্রোলারে Localization ব্যবহার

using Microsoft.Extensions.Localization;

public class HomeController : Controller
{
    private readonly IStringLocalizer<HomeController> _localizer;

    public HomeController(IStringLocalizer<HomeController> localizer)
    {
        _localizer = localizer;
    }

    public IActionResult Index()
    {
        ViewData["WelcomeMessage"] = _localizer["WelcomeText"];
        return View();
    }
}

এখানে, _localizer["WelcomeText"] দ্বারা রিসোর্স ফাইল থেকে ভাষা অনুযায়ী কনটেন্ট লোড করা হচ্ছে।

ভিউতে Localization ব্যবহার

ভিউতে ভাষার কনটেন্ট ব্যবহার করার জন্য @Localizer এবং @ViewData ব্যবহার করা যেতে পারে:

<h2>@ViewData["WelcomeMessage"]</h2>

এখানে, WelcomeText কনটেন্টটি স্বয়ংক্রিয়ভাবে নির্দিষ্ট ভাষা অনুযায়ী প্রদর্শিত হবে।


ভাষা পরিবর্তন করার জন্য ইউআরএল পদ্ধতি

আপনি ব্যবহারকারীদের জন্য ভাষা পরিবর্তনের ফিচারও প্রদান করতে পারেন। সাধারণত, ভাষা পরিবর্তন করা হয় Query String বা Route Data এর মাধ্যমে।

ভাষা পরিবর্তন করার জন্য ইউআরএল কনফিগারেশন

app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture("en-US"),
    SupportedCultures = supportedCultures.Select(c => new CultureInfo(c)).ToArray(),
    SupportedUICultures = supportedCultures.Select(c => new CultureInfo(c)).ToArray(),
    RequestCultureProviders = new[] {
        new QueryStringRequestCultureProvider()
    }
});

এখানে, আপনি Query String এর মাধ্যমে ভাষা পরিবর্তন করতে পারবেন, যেমন: ?culture=fr-FR.


সারাংশ

ASP.NET Core-এ Multiple Language Support যোগ করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আন্তর্জাতিক ব্যবহারকারীদের জন্য উপযোগী করে তুলতে পারবেন। Localization এবং Internationalization এর মাধ্যমে আপনার অ্যাপ্লিকেশন একাধিক ভাষায় কনটেন্ট প্রদর্শন করতে সক্ষম হয়। এটি একটি সিম্পল প্রক্রিয়া, যেখানে রিসোর্স ফাইল তৈরি করা হয় এবং সেই অনুযায়ী কনটেন্ট প্রদর্শন করা হয়। এছাড়া, ক্লায়েন্টকে ভাষা পরিবর্তনের সুবিধা দেওয়ার মাধ্যমে ইউজার এক্সপেরিয়েন্স আরও উন্নত করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion